import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import viteSvgIcons from 'vite-plugin-svg-icons'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
import viteCompression from 'vite-plugin-compression'
import vueSetupExtend from 'vite-plugin-vue-setup-extend'
import AutoImport from 'unplugin-auto-import/vite'
import { resolve } from 'path'

export default ({ mode }) => {
  return defineConfig({
    plugins: [
      vue(), //{refTransform: true} // 开启ref转换 ref 要求我们访问变量时需要加上.value，如果这让你觉得难受，你可以通过开启官方提供的另一种方式，在 ref 前加上 $    let count = $ref(1)  暂不建议使用此方式。
      viteCompression(),
      vueSetupExtend(),
      viteSvgIcons({
        iconDirs: [resolve(process.cwd(), 'src/assets/icons')],
        symbolId: 'icon-[dir]-[name]'
      }),
      AutoImport({
        dts: './auto-imports.d.ts', // 生成配置文件，如果是ts项目，通常我们会把声明文件放在根目录/types中，注意，这个文件夹需要先建好，否则可能导致等下无法往里生成auto-imports.d.ts文件
        imports: ['vue', 'vue-router', 'pinia'],
        eslintrc: {
          enabled: false, // 默认 false, true 启用。生成一次就可以，避免每次工程启动都生成，一旦生成配置文件之后，最好把enable关掉，即改成false。否则这个文件每次会在重新加载的时候重新生成，这会导致eslint有时会找不到这个文件。当需要更新配置文件的时候，再重新打开
          filepath: './.eslintrc-auto-import.json', // 生成json文件,可以不配置该项，默认就是将生成在根目录
          globalsPropValue: true
        }
      }),
      Components({
        resolvers: [AntDesignVueResolver()]
      })
    ],
    resolve: {
      alias: {
        '@': resolve(__dirname, './src')
      }
    },
    base: loadEnv(mode, process.cwd()).VITE_PUBLIC_PATH,
    server: {
      port: 6464,
      open: true,
      cors: true
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: '@use "src/styles/mixin.scss" as *;'
        }
      }
    },
    build: {
      target: 'es2019',
      brotliSize: false,
      chunkSizeWarningLimit: 2000
    }
  })
}
